<!DOCTYPE html>
<html>

<head lang="en">
    <meta charset="UTF-8">
    <title>注册</title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport"
          content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <meta name="format-detection" content="telephone=no">
    <meta name="renderer" content="webkit">
    <meta http-equiv="Cache-Control" content="no-siteapp"/>

    <link rel="stylesheet" href="./AmazeUI-2.4.2/assets/css/amazeui.min.css"/>
    <link href="./css/dlstyle.css" rel="stylesheet" type="text/css">
    <script src="./AmazeUI-2.4.2/assets/js/jquery.min.js"></script>
    <script src="./AmazeUI-2.4.2/assets/js/amazeui.min.js"></script>
    <!--引入js-->
    <script src="js/plugins/vue/dist/vue.js"></script>
    <script src="js/plugins/axios/dist/axios.js"></script>
    <script src="js/common.js"></script>


</head>

<body>

<div class="login-boxtitle">
    <a href="home/demo.html"><img alt="" src="./images/logobig.png"/></a>
</div>

<div class="res-banner" id="app" >
    <div class="res-main">
        <div class="login-banner-bg"><span></span><img src="./images/big.jpg"/></div>
        <div class="login-box">

            <div class="am-tabs" id="doc-my-tabs">
                <ul class="am-tabs-nav am-nav am-nav-tabs am-nav-justify">
                    <li class="am-active"><a href="">邮箱注册</a></li>
                    <li><a href="">手机号注册</a></li>
                </ul>

                <div class="am-tabs-bd">
                    <div class="am-tab-panel am-active">
                        <form method="post">

                            <div class="user-email">
                                <label for="email"><i class="am-icon-envelope-o"></i></label>
                                <input type="email"
                                       name="" id="email"
                                       placeholder="请输入邮箱账号"
                                       v-model="emailRegisterForm.email">
                            </div>
                            <div class="user-email">
                                <label for="emailRegisterForm.emailImageCode"><i class="am-icon-check am-icon-sm"></i></label>
                                <input v-model="emailRegisterForm.emailImageCodeValue"
                                        type="text"
                                        name=""
                                        style="width: 180px;"
                                        id="emailRegisterForm.emailImageCode"
                                        placeholder="请输入图片验证码">
                                <img id="captcha-image-temp"
                                     @click="getImageCodeEmail"
                                     :src="emailRegisterForm.emailImageCode"
                                     class="captcha-image-temp"
                                     alt="点击换图" title="点击换图"
                                     style="vertical-align: middle; cursor: pointer;">
                            </div>
                            <div class="verification">
                                <label for="code"><i class="am-icon-code-fork"></i></label>
                                <input v-model="emailRegisterForm.emailCode" type="email" name="" id="code" placeholder="请输入验证码">
                                <a
                                    class="btn"
                                    href="javascript:void(0);"
                                    @click="getEmailverifyCode"
                                    id="sendEmailCode">
                                    <span id="dyEmailButton">获取</span></a>
                            </div>
                            <div class="user-pass">
                                <label for="password"><i class="am-icon-lock"></i></label>
                                <input type="password" name="" id="password" placeholder="设置密码">
                            </div>
                            <div class="user-pass">
                                <label for="passwordRepeat"><i class="am-icon-lock"></i></label>
                                <input type="password" name="" id="passwordRepeat" placeholder="确认密码">
                            </div>

                        </form>

                        <div class="login-links">
                            <label for="reader-me">
                                <input id="reader-me" type="checkbox"> 点击表示您同意商城《服务协议》
                            </label>
                        </div>
                        <div class="am-cf">
                            <input @click="emailRegister" type="submit" name="" value="注册" class="am-btn am-btn-primary am-btn-sm am-fl">
                        </div>

                    </div>

                    <div class="am-tab-panel">
                        <form method="post">
                            <div class="user-phone">
                                <label for="phone"><i class="am-icon-mobile-phone am-icon-md"></i></label>
                                <input  type="tel"
                                        name="" id="phone"
                                        placeholder="请输入手机号"
                                        v-model="phoneRegisterForm.phone">
                            </div>
                            <div class="user-phone">
                                <label for="phoneRegisterForm.phoneImageCode"><i class="am-icon-check am-icon-sm"></i></label>
                                <input v-model="phoneRegisterForm.phoneImageCodeValue"
                                        type="text"
                                        name=""
                                        style="width: 180px;"
                                        id="phoneRegisterForm.phoneImageCode"
                                        placeholder="请输入图片验证码">
                                <img id="captcha-image-temp"
                                     @click="getImageCodePhone"
                                     :src="phoneRegisterForm.phoneImageCode"
                                     class="captcha-image-temp"
                                     alt="点击换图" title="点击换图"
                                     style="vertical-align: middle; cursor: pointer;">
                            </div>
                            <div class="verification">
                                <label for="code"><i class="am-icon-code-fork"></i></label>
                                <input v-model="phoneRegisterForm.phoneCode" type="tel" name="" id="code" placeholder="请输入验证码">
                                <a
                                    class="btn"
                                    href="javascript:void(0);"
                                    @click="getMobileverifyCode"
                                    id="sendMobileCode">
                                    <span id="dyMobileButton">获取</span></a>
                            </div>
                            <div class="user-pass">
                                <label for="password"><i class="am-icon-lock"></i></label>
                                <input type="password" name="" id="password" placeholder="设置密码">
                            </div>
                            <div class="user-pass">
                                <label for="passwordRepeat"><i class="am-icon-lock"></i></label>
                                <input type="password" name="" id="passwordRepeat" placeholder="确认密码">
                            </div>
                        </form>
                        <div class="login-links">
                            <label for="reader-me">
                                <input id="reader-me" type="checkbox"> 点击表示您同意商城《服务协议》
                            </label>
                        </div>
                        <div class="am-cf">
                            <input @click="phoneRegister" type="submit" name="" value="注册" class="am-btn am-btn-primary am-btn-sm am-fl">
                        </div>
                        <hr>
                    </div>

                </div>
            </div>

        </div>
    </div>

    <div class="footer ">
        <div class="footer-hd ">
            <p>
                <a href="# ">恒望科技</a>
                <b>|</b>
                <a href="# ">商城首页</a>
                <b>|</b>
                <a href="# ">支付宝</a>
                <b>|</b>
                <a href="# ">物流</a>
            </p>
        </div>
        <div class="footer-bd ">
            <p>
                <a href="# ">关于恒望</a>
                <a href="# ">合作伙伴</a>
                <a href="# ">联系我们</a>
                <a href="# ">网站地图</a>
                <em>© 2015-2025 Hengwang.com 版权所有. 更多模板 <a href="http://www.cssmoban.com/" target="_blank" title="模板之家">模板之家</a>
                    - Collect from <a href="http://www.cssmoban.com/" title="网页模板" target="_blank">网页模板</a></em>
            </p>
        </div>
    </div>
</div>
</body>
<script>
	$(function () {
		$('#doc-my-tabs').tabs();
	})
</script>
<script type="text/javascript">
    new Vue({//原生Vue（引入的有Vue的js包,可以使用vue的功能标签）
        el: '#app',//指定挂载节点(div的作用域范围)
        data: {
            /*手机*/
            phoneRegisterForm:{
                phoneImageCode: "",
                phoneImageCodePrefix: "data:image/jpeg;base64,",//手机验证码baser64加密拼接头

                phone:"",//手机号

                phoneImageCodeKey:"",
                phoneImageCodeValue:"",//手机图片验证码

                phoneCode:"",// 手机号验证码

                password:"",//一次密码
                passwordRepeat:"",//二次密码
                type:"register"
            },
            /*邮箱*/
            emailRegisterForm:{
                emailImageCode: "",//邮箱图片验证码
                emailImageCodePrefix: "data:image/jpeg;base64,",//邮箱验证码baser64加密拼接头
                email:"",//邮箱号
                emailImageCodeKey:"",
                emailImageCodeValue:"",//邮箱图片验证码
                emailCode:"",// 邮箱验证码
                password:"",//一次密码
                passwordRepeat:"",//二次密码
                type:"register"
            },

        },
        /*函数方法*/
        methods: {
            // 1.生成UUID的方法
            createUuid(){
                var s = [];
                var hexDigits = "0123456789abcdefghi";
                for (var i = 0; i < 36; i++) {
                    s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
                }
                s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
                s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
                s[8] = s[13] = s[18] = s[23] = "-";

                var uuid = s.join("");
                return uuid;//返回的uuid存放在localStorage
            },

            // 2.发起Axios请求获取图形验证码的方法
            getImageCodePhone(){
                // 2.1.从localStorage中获取UUID
                let phoneImageCodeKey = localStorage.getItem("registerImageCodeKey");
                // 2.2.判断当前浏览器本地是否有key值，没有则生成，有则直接使用
                if(!phoneImageCodeKey || phoneImageCodeKey === ''){
                    phoneImageCodeKey = this.createUuid();//============================= 这里将随机生成的uuid进行赋值
                    localStorage.setItem("registerImageCodeKey",phoneImageCodeKey);
                }
                // 2.3.发送Axios请求，传递UUID，得到图形验证码的Base64字符串
                this.$http.get("/verifyCode/image/"+phoneImageCodeKey).then(res=>{
                    // 2.3.1.将接口返回的图形验证码Base64字符串码+前缀赋值给模型中的imageCode字段
                    this.phoneRegisterForm.phoneImageCode = this.phoneRegisterForm.phoneImageCodePrefix+res.data.resultObj;
                })
            },
            //3.点击【获取】按钮 发起Axios请求获取手机验证码，调用后端手机短信接口
            getMobileverifyCode(event){
                // 1.判断手机号不为空
                if(!this.phoneRegisterForm.phone){
                    alert("手机号不能为空");
                    return;
                }
                // 2.判断图片验证码不为空
                if(!this.phoneRegisterForm.phoneImageCodeValue){
                    alert("图片验证码不能为空");
                    return;
                }
                // 3.获取按钮，禁用按钮
                var sendBtn = $(event.target);
                sendBtn.attr("disabled",true);

                // 4.给图形验证码RedisKey赋值
                this.phoneRegisterForm.phoneImageCodeKey = localStorage.getItem("registerImageCodeKey");

                //5.发送ajax请求sms短信验证
                this.$http.post("/verifyCode/smsCode",this.phoneRegisterForm).then(res=>{
                    var ajaxResult = res.data;
                    if(ajaxResult.success){
                        alert("手机验证码已经发送到您的手机，请在3分钟内使用");
                        //5.1.发送成：倒计时 ------ 60秒内限制恶意点击获取手机短信
                        var time = 60;
                        var interval = window.setInterval( function () {
                            //每一条倒计时减一
                            time = time - 1 ;

                            //把倒计时时间搞到按钮上
                            sendBtn.html(time+"秒后重发");

                            //5.2.倒计时完成恢复按钮
                            if(time <= 0){
                                sendBtn.html("重新发送");
                                sendBtn.attr("disabled",false);
                                //清除定时器
                                window.clearInterval(interval);
                            }
                        },1000);
                    }else{
                        //5.3.发送失败：提示，恢复按钮
                        sendBtn.attr("disabled",false);
                        alert("发送失败:"+ajaxResult.message);
                    }
                })
            },
            phoneRegister(){
                // 发送请求
                this.$http.post("/verifyCode/phoneRegister", this.phoneRegisterForm,)
                    .then(res=>{
                        if (res.data.success){
                            alert("注册成功");
                            location.href = "/index.html"
                        }else {
                            alert("注册失败:" + res.data.msg);
                        }
                    })
            },
            // 发起Axios请求获取图形验证码的方法
            getImageCodeEmail(){

                // 2.1.从localStorage中获取UUID
                let EmailimageCodeKey = localStorage.getItem("registerEmailImageCodeKey");
                // 2.2.判断当前浏览器本地是否有key值，没有则生成，有则直接使用
                if(!EmailimageCodeKey || EmailimageCodeKey === ''){
                    EmailimageCodeKey = this.createUuid();
                    localStorage.setItem("registerEmailImageCodeKey",EmailimageCodeKey);
                }
                // 2.3.发送Axios请求，传递UUID，得到图形验证码的Base64字符串
                this.$http.get("/verifyCode/image/"+EmailimageCodeKey).then(res=>{
                    // 2.3.1.将接口返回的图形验证码Base64字符串码+前缀赋值给模型中的imageCode字段
                    this.emailRegisterForm.emailImageCode = this.emailRegisterForm.emailImageCodePrefix+res.data.resultObj;
                })
            },
            //3.点击【获取】按钮 发起Axios请求获取手机验证码，调用后端手机短信接口
            getEmailverifyCode(event){
                // 1.判断邮箱号不为空
                if(!this.emailRegisterForm.email){
                    alert("邮箱号不能为空");
                    return;
                }
                // 2.判断图片验证码不为空
                if(!this.emailRegisterForm.emailImageCodeValue){
                    alert("图片验证码不能为空");
                    return;
                }
                // 3.获取按钮，禁用按钮
                var sendBtn = $(event.target);
                sendBtn.attr("disabled",true);

                // 4.给图形验证码RedisKey赋值
                this.emailRegisterForm.emailImageCodeKey = localStorage.getItem("registerEmailImageCodeKey");

                //5.发送ajax请求sms短信验证
                this.$http.post("/verifyCode/emailCode",this.emailRegisterForm).then(res=>{
                    var ajaxResult = res.data;
                    if(ajaxResult.success){
                        alert("邮箱验证码已经发送到您的手机，请在3分钟内使用");
                        //5.1.发送成：倒计时 ------ 60秒内限制恶意点击获取手机短信
                        var time = 60;
                        var interval = window.setInterval( function () {
                            //每一条倒计时减一
                            time = time - 1 ;

                            //把倒计时时间搞到按钮上
                            sendBtn.html(time+"秒后重发");

                            //5.2.倒计时完成恢复按钮
                            if(time <= 0){
                                sendBtn.html("重新发送");
                                sendBtn.attr("disabled",false);
                                //清除定时器
                                window.clearInterval(interval);
                            }
                        },1000);
                    }else{
                        //5.3.发送失败：提示，恢复按钮
                        sendBtn.attr("disabled",false);
                        alert("发送失败:"+ajaxResult.message);
                    }
                })
            },
            emailRegister(){
                // 发送请求
                this.$http.post("/verifyCode/emailRegister", this.emailRegisterForm)
                    .then(res=>{
                        if (res.data.success){
                            alert("注册成功");
                            location.href = "/index.html"
                        }else {
                            alert("注册失败:" + res.data.msg);
                        }
                    })
            },

        },
        /*钩子函数*/
        mounted(){
            this.getImageCodePhone();//手机图形验证码
            this.getImageCodeEmail();//邮箱图形验证码
        }

    })
</script>
</html>